/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package controladores;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.Vector;
import javax.swing.JOptionPane;
import modelos.*;
import vistas.vista_producto;


public class controlador_productos implements ActionListener {
    vista_producto v_pro;
    modelo_productos m_pro;
    modelo_categorias m_cat;
    modelo_ingredientes m_ing;
    ArrayList<modelo_ingredientes> lista_ingredientes;
    ArrayList<modelo_ingredientes> lista_ingredientes_guardar;
    ArrayList<modelo_categorias> lista_categorias;
    modelo_ingredientes m_ing_guardar;

    public void actionPerformed(ActionEvent e) {
    String comando = e.getActionCommand();
    if (comando.equals("mas"))
      mas();
    else if (comando.equals("menos"))
      menos();
    else if (comando.equals("registrar"))
      registrar();
        

    }

    public controlador_productos(vista_producto v_pro) {
        this.v_pro = v_pro;
        m_cat = new modelo_categorias();
        m_ing = new modelo_ingredientes();
        m_pro = new modelo_productos();
        lista_ingredientes_guardar =new ArrayList<modelo_ingredientes>();

    }

     void mas()
    {
     Vector<String> fila = new Vector<String>();
     m_ing_guardar = new modelo_ingredientes();
     
     int posi_ingrediente=v_pro.getCmb_ingrediente().getSelectedIndex();

     m_ing_guardar.setId(lista_ingredientes.get(posi_ingrediente).getId().toString());
     m_ing_guardar.setNombre(lista_ingredientes.get(posi_ingrediente).getNombre().toString());
     m_ing_guardar.setStock(Float.parseFloat(v_pro.getJtxtcantidad().getValue().toString()));

     fila.add(m_ing_guardar.getNombre());
     fila.add(String.valueOf(m_ing_guardar.getStock()));
     v_pro.getModelo_tabla().addRow(fila);
     lista_ingredientes_guardar.add(m_ing_guardar);
    }
    void menos()
    {
        if(v_pro.getModelo_tabla().getRowCount()>0)
        {
         v_pro.getModelo_tabla().removeRow(v_pro.getjTable_producto().getSelectedRow());
         lista_ingredientes_guardar.remove(v_pro.getjTable_producto().getSelectedRow());
        }
    }

    void registrar()
    {

     if(hayVacio())
     {

        m_pro.insertar(v_pro.getJtxt_codigo().getText(),v_pro.getJtxt_nombre().getText(),v_pro.getJtxt_descripcion().getText(),lista_categorias.get(v_pro.getCmb_categoria().getSelectedIndex()).getId(),v_pro.getJtxt_precio().getText(),lista_ingredientes_guardar);
        aviso("se ha registrado el producto exitosamente");
        v_pro.cancelar();
     }
     else
     {
      aviso("verifique, faltan por llenar datos");

     }
    }


    public void cargar_categoria()
    {
    lista_categorias   = m_cat.lista();
        for (int i = 0; i < lista_categorias.size(); i++) {
            v_pro.getCmb_categoria().addItem(lista_categorias.get(i).getNombre());
        }
    }
    public void cargar_ingredientes()
    {
    lista_ingredientes = m_ing.lista();
        for (int i = 0; i < lista_ingredientes.size(); i++) {
            v_pro.getCmb_ingrediente().addItem(lista_ingredientes.get(i).getNombre());
        }
    }


   void aviso(String mensaje)
   {
     JOptionPane.showMessageDialog(v_pro, mensaje,"aviso",JOptionPane.INFORMATION_MESSAGE);
   }

   int pregunta(String mensaje)
   {
     int i =JOptionPane.showConfirmDialog(v_pro, mensaje);
     return i;
   }

   public boolean hayVacio()
   {

   if(v_pro.getJtxt_codigo().getText().isEmpty() || v_pro.getJtxt_nombre().getText().isEmpty() || v_pro.getJtxt_descripcion().getText().isEmpty() || v_pro.getJtxt_precio().getText().isEmpty())
       return false;
       else
       return true;
   }








}
